const express = require('express')
const db = require('./utils/db')
const app = express()
app.use(express.json())
app.use(express.urlencoded())
// 查询列表
app.get('/todos', async (req, res) => {
    try {
        let data = await db.getDb()
        res.status(200).json(data.todos)
    } catch (error) {
        res.status(500).json(error.message)
    }
})
// 查询单条
app.get('/todos/:id', async (req, res) => {
    try {
        let data = await db.getDb()
        const todo = data.todos.find(item => item.id + "" === req.params.id)
        res.status(200).json(todo)
    } catch (error) {
        res.status(500).json(error.message)
    }
})
// 添加一条
app.post('/todos', async (req, res) => {
    try {
        const data = await db.getDb()
        let todos = data.todos
        let title = req.body.title;
        todos.push({
            id: todos.length ? todos.length + 1 + "" : 1,
            title
        })
        await db.saveDb({
            "todos":todos
        })
        res.status(200).json("成功")
    } catch (error) {
        res.status(500).json(error.message)
    }
})
// 修改单条
app.patch('/todos/:id', async (req, res) => {
    try {
        const data = await db.getDb()
        let todos = data.todos
        let title = req.body.title
        let id = req.params.id
        const todo = todos.find(item => item.id === id)
        if(!todo){
            res.status(404).json(
                "未找到"
            )
        } 
        Object.assign(todo,{
            title
        })
        db.saveDb({
            "todos":todos
        })
        res.status(200).json(todos)
    } catch (error) {
        res.status(500).json(error.message)
    }
})
// 删除一条
app.delete('/todos/:id', async (req, res) => {
    try {
        let data = await db.getDb()
        let todos = data.todos
        let id = req.params.id
        const index = todos.findIndex(item => item.id === id + "")
        todos.splice(index,1)
        db.saveDb({
            "todos":todos
        })
        res.status(200).json(todos)
    } catch (error) {
        res.status(500).json(error.message)
    }
})
app.listen(3000, () => {
    console.log('server is running ...');
})